package net.lesscoding.session;


import io.netty.channel.Channel;

/**
 * @author eleven
 * @date 2024/10/31 14:24
 * @apiNote
 */
public interface Session {

    /**
     * 绑定会话
     *
     * @param channel  通道
     * @param username 用户名
     */
    void bind(Channel channel, String username);

    /**
     * 解绑会话
     *
     * @param channel
     */
    void unbind(Channel channel);

    /**
     * 获取会话属性
     *
     * @param channel 通道
     * @param name    属性名
     * @return Object         属性值
     */
    Object getAttr(Channel channel, String name);

    /**
     * 设置会话属性
     *
     * @param channel 通道
     * @param name    属性名
     * @param value   属性值
     */
    void setAttr(Channel channel, String name, Object value);

    /**
     * 移除会话属性
     *
     * @param channel 通道
     * @param name    属性名
     */
    void removeAttr(Channel channel, String name);

    /**
     * 获取会话通道
     *
     * @param username 用户名
     * @return Channel      通道
     */
    Channel getChannel(String username);
}
